--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / frontend / js / wsConnectionSupport.js
Displaying Raw • Download
meshchatx/src/frontend/js/wsConnectionSupport.js bce42bcdce0e7d2c6d78228e864a4cd1d974cc82 (bce42bcd) Text, 1.26 KB
T8b949e/**
* @param {number} attemptIndex 0 = first retry after disconnect
* @param {number} baseMs
* @param {number} maxMs
*/
Tff7b72export Tff7b72function Te6edf3getNextReconnectDelayMsTb4b4b4(Te6edf3attemptIndexTb4b4b4, Te6edf3baseMsTb4b4b4, Te6edf3maxMsTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3raw Tff7b72= Te6edf3baseMs Tff7b72* T79c0ff2 Tff7b72** Tffa657MathTb4b4b4.Te6edf3maxTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3attemptIndexTb4b4b4)Tb4b4b4;
Tff7b72return Tffa657MathTb4b4b4.Te6edf3minTb4b4b4(Te6edf3maxMsTb4b4b4, Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Te6edf3rawTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
T8b949e/**
* Human-readable duration for disconnected banner (count-up).
* @param {number} elapsedMs
*/
Tff7b72export Tff7b72function Te6edf3formatDisconnectedDurationTb4b4b4(Te6edf3elapsedMsTb4b4b4) Tb4b4b4{
Tff7b72let Te6edf3t Tff7b72= Tffa657MathTb4b4b4.Te6edf3maxTb4b4b4(T79c0ff0Tb4b4b4, Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Te6edf3elapsedMsTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3s Tff7b72= Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Te6edf3t Tff7b72/ T79c0ff1000Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3s Tff7b72< T79c0ff60Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Tffd700${Te6edf3sTffd700}Ta5d6ffsTa5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3m Tff7b72= Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Te6edf3s Tff7b72/ T79c0ff60Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3secRem Tff7b72= Te6edf3s Tff7b72% T79c0ff60Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3m Tff7b72< T79c0ff60Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3secRem Tff7b72> T79c0ff0 Tff7b72? Ta5d6ff`Tffd700${Te6edf3mTffd700}Ta5d6ffm Tffd700${Te6edf3secRemTffd700}Ta5d6ffsTa5d6ff` Tff7b72: Ta5d6ff`Tffd700${Te6edf3mTffd700}Ta5d6ffmTa5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3h Tff7b72= Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Te6edf3m Tff7b72/ T79c0ff60Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3minRem Tff7b72= Te6edf3m Tff7b72% T79c0ff60Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3h Tff7b72< T79c0ff24Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3minRem Tff7b72> T79c0ff0 Tff7b72? Ta5d6ff`Tffd700${Te6edf3hTffd700}Ta5d6ffh Tffd700${Te6edf3minRemTffd700}Ta5d6ffmTa5d6ff` Tff7b72: Ta5d6ff`Tffd700${Te6edf3hTffd700}Ta5d6ffhTa5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3d Tff7b72= Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Te6edf3h Tff7b72/ T79c0ff24Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3hrRem Tff7b72= Te6edf3h Tff7b72% T79c0ff24Tb4b4b4;
Tff7b72return Te6edf3hrRem Tff7b72> T79c0ff0 Tff7b72? Ta5d6ff`Tffd700${Te6edf3dTffd700}Ta5d6ffd Tffd700${Te6edf3hrRemTffd700}Ta5d6ffhTa5d6ff` Tff7b72: Ta5d6ff`Tffd700${Te6edf3dTffd700}Ta5d6ffdTa5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72export Tff7b72function Te6edf3reconnectDelayWithJitterMsTb4b4b4(Te6edf3attemptIndexTb4b4b4, Te6edf3baseMsTb4b4b4, Te6edf3maxMsTb4b4b4, Te6edf3jitterMaxMsTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3base Tff7b72= Te6edf3getNextReconnectDelayMsTb4b4b4(Te6edf3attemptIndexTb4b4b4, Te6edf3baseMsTb4b4b4, Te6edf3maxMsTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3jitter Tff7b72= Te6edf3jitterMaxMs Tff7b72> T79c0ff0 Tff7b72? Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Tffa657MathTb4b4b4.Te6edf3randomTb4b4b4(Tb4b4b4) Tff7b72* Te6edf3jitterMaxMsTb4b4b4) Tff7b72: T79c0ff0Tb4b4b4;
Tff7b72return Te6edf3base Tff7b72+ Te6edf3jitterTb4b4b4;
Tb4b4b4}
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────